#define _TIPKOVNICA_C_
#include <tipkovnica.h>

#include <jezgra/razno.h>
#include <ispis.h>
#include <jezgra/pozivi_jezgre.h>


int tipkovnica_dohvati (int sto, int *ms, int msd, bool svaki, bool _cekaj)
{
	int povr = -1;
	zahtjev_tipkovnici z;
	
	z.sto = sto;
	z.ms = ms;
	z.ms_d = msd;
	z.svaki = svaki;
	z.cekaj = _cekaj;
	
	while (1) {
		povr = j_funkcija(TIPKOVNICA_DOHVATI, &z);
		//dretva ce se blokirati ako nema dovoljno znakova  i _cekaj je
		//postavljeno
		
		if (povr > 0 || povr < 0 || !_cekaj)
			break;
	}

	return povr;
}

int tipkovnica_dohvati_znak ()
{
	int znak, povr;
	
	povr = tipkovnica_dohvati(ZNAK, &znak, 1, FALSE, TRUE);
	
	if (povr == 1)
		return znak;
	else
		return povr;
}
int tipkovnica_dohvati_znak_pr () //cita i "specijalne" tipke
{
	int znak, povr;
	
	povr = tipkovnica_dohvati(ZNAK, &znak, 1, TRUE, TRUE);
	
	if (povr == 1)
		return znak;
	else
		return povr;
}
int tipkovnica_dohvati_rijec (char *ms, int msd)
{
	return tipkovnica_dohvati(RIJEC, (int *) ms, msd, FALSE, TRUE);
}

int tipkovnica_dohvati_red (char *ms, int msd)
{
	return tipkovnica_dohvati(REDAK, (int *) ms, msd, FALSE, TRUE);
}

